#pragma ident "$ID: XY. CAO 2016-11-24 $"

#ifndef GPSTK_IFCBCorrection_HPP
#define GPSTK_IFCBCorrection_HPP

//============================================================================
//
//  Copyright (c) 
//
//  SJ.Zhang, Wuhan Uniersity, 2019
//
//============================================================================

#include "ProcessingClass.hpp"
#include "RecTypeDataReader.hpp"
#include "MGEXDCBReader.hpp"
#include "CommonTime.hpp"
#include "CommonHeader.hpp"

namespace gpstk
{


   /** Only read DLR/IGG daily MGEX DCB file, not DLR week update file
    *
    *
    */
   class IFCBCorrection : public ProcessingClass
   {
      public :


           // Default constructr
		 IFCBCorrection()    
         {};

           /** Return a satTypeValueMap object, adding the new data generated
            *  when calling this object.
            *
            * @param  time     Epoch corresponding to the data.
            * @param  gData    Data object holding the data.
            */
         virtual satTypeValueMap& Process( const CommonTime& time,
                                           satTypeValueMap& gData)
            noexcept(false);


         /** Returns a gnssRinex object, adding the new data generated
          *  when calling this object.
          *
          * @param gData     Data object holding the data.
          */
         virtual void Process(commonHeader& comHeader,gnssRinex& gData)
            noexcept(false);

         /** Return a sourceRinex object, adding the new data generated
          *  when calling this object.
          *
          * @param gData     Data object holding the data.
          */
         virtual void Process(commonHeader& comHeader,sourceRinex& gData) ;


           // Returns a string identifying this object.
         virtual std::string getClassName () const;


           // Default deconstructr
         ~IFCBCorrection(){};


      private:

		  // Object that reads and stores MGEX DCB data
		  IFCBStore* pIFCBStore;
         
   }; // End of class 'IFCBCorrection'

      // @}

}; // end of namespace gpstk

#endif   // GPSTK_IFCBCorrection_HPP
